Redundant Array of Independent Disk (RAID) controllers stripe data to multiple storage drives and calculate parity data from the data written to the drives in the RAID stripes (typically by XOR'ing the striped data) to write to a parity disk. One potential problem with RAID implementations is known as a RAID write hole. A write hole occurs when data in a RAID stripe is updated, but the parity data is not updated so that all disks XOR to zero in order to reconstruct data when a disk fails. The problem is that there is no way to update two or more disks atomically, so RAID stripes can become damaged during a crash or power outage. To address this problem, RAID controllers maintain non-volatile storage devices, also known as NVRAMs, to backup the write data until the parity data can be written. However, adding NVRAMs increases the cost of RAID controllers and RAID solutions. RAID software implementations have not been known to successfully address the write hole problem without having significant performance issues.
There is a need in the art to provide improved solutions to writing data across multiple storage devices, such as with a RAID storage solution, that allows for recovery of the data in case of a failure.